<script src="//cdn.jsdelivr.net/npm/hls.js@0.14.17"></script>
<script src="./dist/p2p-engine.js"></script>
<video id="video" controls></video>
<p id="version"></p>
<h3>download info:</h3>
<p id="info"></p>
<table id="table-body">
    <tbody ></tbody>
</table>
<script>
    document.querySelector('#version').innerText = `hls.js version: ${Hls.version}  p2p version: ${P2PEngineHls.version}`;
    var p2pConfig = {
        logLevel: 'debug',
        live: false,        // set to false in VOD mode
        // announceLocation: 'hk',        // if using Hongkong tracker
        // announceLocation: 'us',        // if using USA tracker
        // Other p2pConfig options provided by CDNBye
    }
    var source = 'https://test-streams.mux.dev/x36xhzz/url_2/193039199_mp4_h264_aac_ld_7.m3u8';
    var video = document.getElementById('video');
    if(Hls.isSupported()) {
        var hls = new Hls({
            maxBufferSize: 0,       // Highly recommended setting
            maxBufferLength: 5,     // Highly recommended setting
            liveSyncDuration: 30,   // Highly recommended setting
        });
        p2pConfig.hlsjsInstance = hls;
        hls.loadSource(source);
        hls.attachMedia(video);
        hls.on(Hls.Events.MANIFEST_PARSED,function(event, data) {
            video.play();
        });
    }
    // This is using the built-in support of the plain video element, without using hls.js.
    else if (video.canPlayType('application/vnd.apple.mpegurl')) {
        video.src = source;
        video.addEventListener('loadedmetadata',function() {
            video.play();
        });
    }
    var engine = new P2pEngineHls(p2pConfig);

    engine.on('stats', function ({totalHTTPDownloaded=0, totalP2PDownloaded=0, totalP2PUploaded=0}) {
        var total = totalHTTPDownloaded + totalP2PDownloaded;
        document.querySelector('#info').innerText = `p2p ratio: ${Math.round(totalP2PDownloaded/total*100)}%, saved traffic: ${totalP2PDownloaded}KB`;
    })

    engine.on('FRAG_LOADED', ({url, sn, segId, loaded, duration, byP2p, fromPeerId}) => {
        // console.warn(`FRAG_LOADED ${url}`)
        var source = 'HTTP';
        if (byP2p) {
            source = 'P2P';
        }
        addToTable(url, loaded, source);
    });

    function addToTable(url, downloaded, source) {
        var infoStr = `download ${url}(size:${downloaded}B) by ${source}`;
        document.querySelector('#table-body tbody').innerHTML +=
            `<tr style="text-align: center">
                    <td>${infoStr}</td>
                </tr>`
    };
</script>
